/*
 * @Descripttion: 
 * @version: 
 * @Author: wtzhang
 * @Date: 2021-05-24 10:49:56
 * @LastEditors: wtzhang
 * @LastEditTime: 2021-05-24 16:01:26
 */

// 1.引入依赖
const mongoose = require('mongoose')
// 2. 连接数据库
mongoose.connect('mongodb://localhost:27017/itcast', {
  useNewUrlParser: true,
  useUnifiedTopology: true
})

// 3. 设计文档结构（表结构）
// 字段名称就是表结构的属性名称
// 约束的目的就是为了保证数据的完整性，不要有脏数据
let userSchema = mongoose.Schema({
  username: {
    type: String,
    required: true // 必须有，不能为空
  },
  password: {
    type: String,
    required: true
  },
  gender: {
    type: String
  }
})

// 4. 注册实例模型
// mongoose.model 方法就是用来将一个架构发布为model
// 第一个参数：传入一个大写名次单数字符串来表示你的 表 名
/**
 *   mongoose 会自动将大写名词的字符串生成 小写复数 的集合名称
 * 例如这里的 User 最终会变成 users 的集合名称
 */
// 第二个参数：架构 Schema
// 返回值： 模型对象（模型构造函数）
let User = mongoose.model('User', userSchema)

// 5. 操作数据库，行为处理
let admin = new User({
  username: 'admin',
  password: '123456',
  gender: '男'
})
// ************************ 新增数据 start **********************
// admin.save(function (err, res) {
//   if (err) {
//     console.log('保存失败！');
//   }
//   console.log('保存成功！');
// })
// ************************ 新增数据 end **********************


// ************************ 查询数据 start **********************
// 查询所有
// User.find(function (err, res) {
//   if (err) {
//     console.log('查询失败');
//   }
//   console.log(res);
// })
// 条件查询
// 查询符合条件的所有数据
// User.find({ username: 'admin' }, function (err, res) {
//   if (err) {
//     console.log('查询失败');
//   }
//   console.log('查询成功：', res);
// })
// 查询符合条件的第一条数据
User.findOne({ username: 'admin' }, function (err, res) {
  if (err) {
    console.log('查询失败');
  }
  console.log('查询成功：', res);
})
// ************************ 查询数据 end **********************


// ************************ 删除数据 start ********************
// User.remove({ username: 'admin' }, function (err) {
//   if (err) {
//     console.log('删除失败！');
//   }
//   console.log('删除成功！');
// })
// ************************ 删除数据 end **********************


// ************************ 更新数据 start **********************
// User.findByIdAndUpdate('60ab470593214016e07b85f8', {
//   password: '123'
// }, function (err, res) {
//   if (err) {
//     console.log('更新失败！');
//   }
//   console.log('更新成功：', res);
// })
// ************************ 更新数据 start **********************

